package respostas;

import comportamento.redeneural.ICamadaNeuralPerceptron;
import comportamento.redeneural.IRedeNeural;

import concreto.redeneural.CamadaNeuralPerceptron;
import concreto.redeneural.RedeNeuralFeedFoward;

public class AC06 {

    /**
     * @param args
     */
    public static void main(String[] args) {

	double[][] entradas = matrizDeEntrada();
	double[][] saidas = {
		{  1, -1, -1, -1, -1, -1, -1, -1},
		{ -1,  1, -1, -1, -1, -1, -1, -1},
		{ -1, -1,  1, -1, -1, -1, -1, -1}, 
		{ -1, -1, -1,  1, -1, -1, -1, -1},
		{ -1, -1, -1, -1,  1, -1, -1, -1},
		{ -1, -1, -1, -1, -1,  1, -1, -1},
		{ -1, -1, -1, -1, -1, -1,  1, -1},
		{ -1, -1, -1, -1, -1, -1, -1,  1}};	

	IRedeNeural redeNeural = new RedeNeuralFeedFoward();
	ICamadaNeuralPerceptron camadaPerceptron = new CamadaNeuralPerceptron();

	redeNeural.adicionarCamadaNeural(camadaPerceptron);
	redeNeural.treinar(entradas, saidas);
    }


    private static double[][] matrizDeEntrada(){
	double[][]matrizTransposta = new double[8][120];
	double[][]matriz =

	{
		{-1,-1,1,-1,-1,1,1,-1  },
		{-1,-1,1,-1,1,1,1,-1   },
		{-1,-1,1,1,1,1,1,-1    },
		{-1,1,1,1,-1,1,1,-1    },
		{-1,1,1,1,-1,1,1,1     },
		{-1,1,1,1,-1,1,-1,1    },
		{-1,1,1,1,-1,-1,-1,1   },
		{-1,-1,1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,1,-1,-1,1 },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,1,-1  },
		{-1,-1,1,-1,1,1,1,-1   },
		{-1,-1,1,1,1,1,1,-1    },
		{1,1,1,1,-1,1,1,-1     },
		{1,1,1,1,-1,1,1,1      },
		{1,1,1,1,-1,1,-1,1     },
		{1,1,1,1,-1,-1,-1,1    },
		{-1,-1,1,1,1,-1,-1,1   },
		{-1,-1,-1,1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,-1,-1,-1,1,1,-1 },
		{-1,-1,-1,-1,1,1,1,-1  },
		{1,-1,-1,-1,1,-1,1,-1  },
		{1,1,-1,-1,-1,-1,1,-1  },
		{1,1,-1,-1,-1,-1,1,1   },
		{1,1,-1,-1,-1,-1,-1,1  },
		{1,1,1,-1,-1,-1,-1,-1  },
		{1,-1,1,1,1,-1,-1,-1   },
		{-1,-1,-1,1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,-1,-1,-1,1,1,-1 },
		{1,-1,-1,-1,1,1,1,-1   },
		{1,-1,-1,-1,1,-1,1,-1  },
		{1,1,-1,-1,-1,-1,1,-1  },
		{-1,1,-1,-1,-1,-1,1,1  },
		{-1,1,-1,-1,-1,-1,-1,1 },
		{1,1,1,-1,-1,-1,-1,-1  },
		{1,-1,1,1,1,-1,-1,-1   },
		{1,-1,-1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,-1,-1,-1,1,1,-1 },
		{1,-1,-1,-1,1,1,1,-1   },
		{1,-1,-1,-1,1,-1,1,-1  },
		{1,1,-1,-1,-1,-1,1,-1  },
		{-1,1,-1,-1,-1,-1,1,1  },
		{-1,1,-1,-1,-1,-1,-1,1 },
		{1,1,1,-1,-1,-1,-1,-1  },
		{1,-1,1,1,1,-1,-1,-1   },
		{1,-1,-1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,1,-1  },
		{1,-1,1,-1,1,1,1,-1    },
		{1,-1,1,-1,1,1,1,-1    },
		{1,1,1,-1,1,1,1,-1     },
		{-1,1,1,1,1,1,1,1      },
		{-1,1,1,1,1,1,-1,1     },
		{1,1,1,1,1,-1,-1,1     },
		{1,-1,1,1,1,-1,-1,1    },
		{1,-1,-1,-1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{1,-1,1,-1,1,1,-1,-1   },
		{1,-1,1,-1,1,1,-1,-1   },
		{1,1,1,-1,1,1,-1,-1    },
		{-1,1,1,1,1,1,-1,1     },
		{-1,1,1,1,1,1,-1,1     },
		{1,1,1,1,1,-1,-1,1     },
		{1,-1,1,1,1,-1,-1,1    },
		{1,-1,-1,-1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{1,-1,1,-1,-1,1,-1,-1  },
		{1,-1,-1,-1,-1,-1,-1,-1},
		{1,1,-1,-1,-1,-1,-1,-1 },
		{-1,1,-1,-1,-1,1,-1,-1 },
		{-1,1,-1,-1,-1,1,-1,-1 },
		{1,1,-1,-1,-1,-1,-1,-1 },
		{1,-1,-1,1,1,-1,-1,-1  },
		{1,-1,-1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{1,-1,1,-1,-1,1,-1,-1  },
		{1,-1,-1,-1,-1,-1,-1,-1},
		{1,1,-1,-1,-1,-1,-1,-1 },
		{-1,1,-1,-1,-1,1,-1,-1 },
		{-1,1,-1,-1,-1,1,-1,-1 },
		{1,1,-1,-1,-1,-1,-1,-1 },
		{1,-1,-1,1,1,-1,-1,-1  },
		{1,-1,-1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{-1,-1,1,-1,-1,1,-1,-1 },
		{1,-1,-1,-1,-1,-1,-1,-1},
		{1,1,-1,-1,-1,-1,-1,-1 },
		{1,1,-1,-1,-1,1,-1,-1  },
		{1,1,-1,-1,-1,1,-1,-1  },
		{1,1,-1,-1,-1,-1,-1,-1 },
		{1,-1,-1,1,1,-1,-1,-1  },
		{-1,-1,-1,1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{-1,-1,1,-1,-1,1,-1,-1 },
		{-1,-1,1,1,-1,1,-1,-1  },
		{1,1,1,1,-1,1,-1,-1    },
		{1,1,1,1,-1,1,-1,1     },
		{1,1,1,1,-1,1,-1,1     },
		{1,1,1,1,-1,-1,-1,1    },
		{-1,-1,1,1,1,-1,-1,1   },
		{-1,-1,-1,1,1,-1,-1,1  },
		{-1,-1,-1,-1,-1,-1,-1,1},
		{-1,-1,1,-1,-1,1,-1,-1 },
		{-1,-1,1,-1,-1,1,-1,-1 },
		{-1,-1,1,1,-1,1,-1,-1  },
		{-1,1,1,1,-1,1,-1,-1   },
		{-1,1,1,1,-1,1,-1,1    },
		{-1,1,1,1,-1,1,-1,1    },
		{-1,1,1,1,-1,-1,-1,1   },
		{-1,-1,1,1,1,-1,-1,1   },
		{-1,-1,-1,-1,1,-1,-1,1 },
		{-1,-1,-1,-1,-1,-1,-1,1}};

	for(int i =0; i < matriz[0].length; i++){
	    for(int j =0; j < matriz.length; j++){
		matrizTransposta[i][j] = matriz[j][i];
	    }
	}
	return matrizTransposta;
    }    

}
